package main

import "fmt"

/*
* Author: JacksonCoder
* CreateTime: 2025/5/18
 */
type Person2 struct {
	Name string
	Age  int
}

func (p Person2) GetName() string {
	// p 代表结构体本身的实例，类似python中的self，这里p可以写为self
	fmt.Println(p.Name)
	return p.Name
}

func (p Person2) SetName(name string) {
	fmt.Printf("SetName: %p\n", &p)
	p.Name = name
}

func (p *Person2) SetName2(name string) {
	fmt.Printf("SetName: %p\n", p)
	p.Name = name
}

// go  不会用 -> 不管是指针还是值 都是  .
func main() {
	var person1 = new(Person2)
	fmt.Printf("person1:%p\n", person1)
	person1.Age = 32
	person1.Name = "darren"
	person1.GetName() // darren
	person1.SetName("king")
	person1.GetName() // darren
	person1.SetName2("柚子老师")
	person1.GetName() // 柚子老师
}
